1. Field of the Invention
This invention relates generally to the field of computer systems and, more particularly, to detecting errors in systems where clients arbitrate amongst themselves for a grant to a central resource.
2. Description of the Related Art
Modern computer systems may include many clients, such as microprocessors or other devices, which perform many functions. Regardless of the function a client may perform, a client may share a central resource in the computer system. The central resource may be any device that performs a specialized function.
Clients may be configured to arbitrate amongst themselves for a grant to a central resource. Each client may receive the requests from all other clients and the clients may each be configured to determine which client is granted the right to access the central resource at a given time. In order for this type of arbitration to work, the clients need to receive all of the requests from other clients so that two or more clients do not send conflicting requests to the central resource substantially simultaneously. One way to determine if each client is receiving the requests of all of the other clients is for each client to send a parity calculation to every other client along with a request. Such a system is illustrated in FIG. 1.
FIG. 1 depicts clients 110a, 110b, and 110c coupled to central resource 100. Clients 110a, 110b, and 110c are also coupled to one another by request lines and parity lines. In FIG. 1, the solid lines are intended to indicate request lines and the dotted lines are intended to indicate parity lines. As can be seen, each client 110a, 110b, and 110c has a request line and a parity line coupled to every other client. In this system, each client 110a, 110b, and 110c may be configured to detect errors pertaining to requests sent from the clients based on the parity signals received from the other clients. A client that detects an error may signal the error condition to the central resource and the central resource may inform a system controller that an error has been detected.
The system of FIG. 1 requires a parity line from and to each client in order to detect errors. As clients are added to the system, the number of parity lines may increase exponentially as each new client adds additional parity lines. In the system of FIG. 1, for example, six parity lines are used where there are three clients. If a fourth client is added, twelve parity lines are needed as the fourth client adds an additional two parity lines between itself and each of the other clients. Similarly, if a fifth client is added, twenty parity lines are needed as the fifth client adds an additional two parity lines between itself and each of the other clients.
In addition, each client in the system of FIG. 1 needs to be configured to detect parity errors. Thus, each client may need additional hardware or software to perform this task. A system and method are needed to reduce the number of parity lines required to perform error detection in a system where clients arbitrate amongst themselves for a grant to a central resource. In addition, a system and method are needed to reduce the amount of hardware or software needed to perform error detection in such a system.
The problems outlined above are in large part solved by the use the system and method described herein. Generally speaking, a system and method for detecting parity errors in a system where clients are configured to arbitrate amongst themselves for a grant to a central resource is provided. A client may send a request for access to the central resource to all other clients. In the event that multiple clients request access to the central resource substantially simultaneously, the clients may each determine which client should be granted the right to send its request to the central resource. The clients may make this determination according to an arbitration scheme. Where multiple requests occur substantially simultaneously, each client may calculate a parity based on the number of requests it receives. The clients may each convey their parity to the central resource. The clients may convey these parities to the central resource at about the same time as the transaction corresponding to the granted request is conveyed to the central resource by its respective client. The central resource may determine that an error has occurred based on the parities received from the clients. If an error occurs, the central resource may generate an error signal and convey the error signal to a system controller.
The system and method described herein may provide advantages over other systems. For example, the hardware needed to implement the system may be reduced since each client may need to convey its parity calculation to a central resource instead of to every other client. Accordingly, each client may need only one parity line connected to the central resource as opposed to a parity line connected to every other client. In this manner, the number of parity lines may increase in a linear manner when new clients are added to the system as opposed to increasing exponentially. The system and method may also allow a single parity error detection circuit to be located in the central resource. Since the central resource may calculate parity errors for all of the clients, each client may no longer need to include parity error detection circuit. Accordingly, the hardware or software at each client may be reduced.